home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1995 October / EnigmA AMIGA RUN 01 (1995)(G.R. Edizioni)(IT)[!][issue 1995-10][Aminet 7].iso / Aminet / game / board / Chaos_src.lha / chaos / src / chaos.h < prev    next >
C/C++ Source or Header  |  1995-05-09  |  13KB  |  447 lines

  1. /*  Chaos:                  The Chess HAppening Organisation System     V5.3
  2.     Copyright (C)   1993    Jochen Wiedmann
  3.  
  4.     This program is free software; you can redistribute it and/or modify
  5.     it under the terms of the GNU General Public License as published by
  6.     the Free Software Foundation; either version 2 of the License, or
  7.     (at your option) any later version.
  8.  
  9.     This program is distributed in the hope that it will be useful,
  10.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  11.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12.     GNU General Public License for more details.
  13.  
  14.     You should have received a copy of the GNU General Public License
  15.     along with this program; if not, write to the Free Software
  16.     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  17.  
  18.  
  19.     $RCSfile: Chaos.h,v $
  20.     $Revision: 3.3 $
  21.     $Date: 1994/11/19 19:32:01 $
  22.  
  23.     This is the include-file of the program. It defines the constants,
  24.     structures and prototypes.
  25.  
  26.     Computer:   Amiga 1200                  Compiler:   Dice 2.07.54 (3.0)
  27.  
  28.     Author:     Jochen Wiedmann
  29.         Am Eisteich 9
  30.       72555 Metzingen
  31.         Tel. 07123 / 14881
  32.         Internet: jochen.wiedmann@zdv.uni-tuebingen.de
  33. */
  34.  
  35.  
  36. #ifndef CHAOS_H
  37. #define CHAOS_H
  38.  
  39. #ifndef Chaos_CAT_H
  40. #include "Chaos_Cat.h"
  41. #endif
  42.  
  43. #ifdef AMIGA
  44. #include <exec/lists.h>
  45. #include <exec/memory.h>
  46. #include <dos/dos.h>
  47. #include <dos/exall.h>
  48. #include <intuition/intuition.h>
  49. #include <libraries/iffparse.h>
  50. #include <libraries/mui.h>
  51. #include <proto/exec.h>
  52. #include <proto/dos.h>
  53. #include <proto/intuition.h>
  54. #include <proto/utility.h>
  55. #include <proto/iffparse.h>
  56. #include <proto/muimaster.h>
  57. #include <clib/alib_protos.h>
  58.  
  59. #include <stdlib.h>
  60. #include <string.h>
  61. #include <stdio.h>
  62. #include <time.h>
  63.  
  64. #else   /*  !AMIGA                      */
  65. #include <stdio.h>
  66. #include <NonAmiga.h>
  67. #endif  /*  AMIGA                       */
  68.  
  69.  
  70.  
  71. #define TRNFILENAME_LEN 512
  72. #define TRNNAME_LEN 60
  73.  
  74. #define TNMODEB_SWISS_PAIRING       0
  75. #define TNMODEB_ROUND_ROBIN         1
  76. #define TNMODEB_BUCHHOLZ            2
  77. #define TNMODEB_EXT_BUCHHOLZ        3
  78. #define TNMODEB_SONNEBORN_BERGER    4
  79. #define TNMODEB_SHIFT_SYSTEM        5
  80. #define TNMODEF_SWISS_PAIRING (1 << TNMODEB_SWISS_PAIRING)
  81. #define TNMODEF_ROUND_ROBIN (1 << TNMODEB_ROUND_ROBIN)
  82. #define TNMODEF_BUCHHOLZ (1 << TNMODEB_BUCHHOLZ)
  83. #define TNMODEF_EXT_BUCHHOLZ (1 << TNMODEB_EXT_BUCHHOLZ)
  84. #define TNMODEF_SONNEBORN_BERGER (1 << TNMODEB_SONNEBORN_BERGER)
  85. #define TNMODE_TABMASK (TNMODEF_BUCHHOLZ|TNMODEF_EXT_BUCHHOLZ| \
  86.             TNMODEF_SONNEBORN_BERGER)
  87. #define TNMODEF_SHIFT_SYSTEM (1 << TNMODEB_SHIFT_SYSTEM)
  88. #define SwissPairingTournament (TrnMode & TNMODEF_SWISS_PAIRING)
  89. #define RoundRobinTournament (TrnMode & TNMODEF_ROUND_ROBIN)
  90.  
  91.  
  92. /*
  93.     The struct Player holds all data of one participant.
  94. */
  95. #define NAMELEN 30
  96. #define BIRTHDAYLEN 10
  97. #define PHONENRLEN 20
  98. #define DWZLEN 10
  99. struct Player
  100.   { struct Node Tn_Node;            /*  This is used to build the alpha-
  101.                     betically sorted list of players.   */
  102.  
  103.     struct Player *LT_Succ;         /*  An internal list is builded when    */
  104.     struct Player *LT_Pred;         /*  pairing the games. These fields     */
  105.                     /*  are used for it.                    */
  106.  
  107.     struct Player *RankNext;        /*  Next in list of internal rankings   */
  108.     struct Player *Opponent;        /*  Used for pairings                   */
  109.     struct Player *Helpptr;         /*  Used for different things           */
  110.     struct Game *First_Game;        /*  List of games                       */
  111.     int Flags;                      /*  See below                           */
  112.     short Nr;                       /*  Used for pairings                   */
  113.     short GFlags, BoardNr;          /*  Used for pairings                   */
  114.     short Points, Buchholz;         /*  Points, Buchholzpoints and extended */
  115.     long  ExtBuchholz;              /*  Buchholzpoints                      */
  116.     short HowMuchWhite;             /*  < 0 = Black; > 0 = White            */
  117.     short HowMuchWhiteLast;         /*  < 0 = Black; > 0 = White            */
  118.     short ELO;                      /*  International ELO number            */
  119.     char DWZ[DWZLEN+1];             /*  German rating number                */
  120.     char Name[NAMELEN+1];           /*  Name and prename                    */
  121.     char Street[NAMELEN+1];         /*  address                             */
  122.     char Village[NAMELEN+1];
  123.     char PhoneNr[PHONENRLEN+1];
  124.     char ChessClub[NAMELEN+1];      /*  Schachclub des Teilnehmers          */
  125.     char BirthDay[BIRTHDAYLEN+1];   /*  Geburtsdatum des Teilnehmers        */
  126.   };
  127. /*
  128.     Possible Flags in the player structure
  129. */
  130. #define TNFLAGSB_SENIOR 31
  131. #define TNFLAGSB_JUNIOR 30
  132. #define TNFLAGSB_WOMAN  29
  133. #define TNFLAGSB_JUNIORA 28
  134. #define TNFLAGSB_JUNIORB 27
  135. #define TNFLAGSB_JUNIORC 26
  136. #define TNFLAGSB_JUNIORD 25
  137. #define TNFLAGSB_JUNIORE 24
  138. #define TNFLAGSB_WITHDRAWN 0    /*  Player has withdrawn                    */
  139. #define TNFLAGSB_HADFREE 1      /*  Player had a free round                 */
  140. #define TNFLAGSB_NOTDOWN 2      /*  Internally used for pairings            */
  141. #define TNFLAGSB_SELECTED 3     /*  Internally used for player selections   */
  142. #define TNFLAGSF_SENIOR (1 << TNFLAGSB_SENIOR)
  143. #define TNFLAGSF_JUNIOR (1 << TNFLAGSB_JUNIOR)
  144. #define TNFLAGSF_WOMAN  (1 << TNFLAGSB_WOMAN)
  145. #define TNFLAGSF_JUNIORA (1 << TNFLAGSB_JUNIORA)
  146. #define TNFLAGSF_JUNIORB (1 << TNFLAGSB_JUNIORB)
  147. #define TNFLAGSF_JUNIORC (1 << TNFLAGSB_JUNIORC)
  148. #define TNFLAGSF_JUNIORD (1 << TNFLAGSB_JUNIORD)
  149. #define TNFLAGSF_JUNIORE (1 << TNFLAGSB_JUNIORE)
  150. #define TNFLAGSF_WITHDRAWN (1 << TNFLAGSB_WITHDRAWN)
  151. #define TNFLAGSF_HADFREE (1 << TNFLAGSB_HADFREE)
  152. #define TNFLAGSF_NOTDOWN (1 << TNFLAGSB_NOTDOWN)
  153. #define TNFLAGSF_SELECTED (1 << TNFLAGSB_SELECTED)
  154.  
  155.  
  156.  
  157. /*
  158.     The Game structure holds all data of one game. The games of one
  159.     participant build a linked list. Each game is therefore represented
  160.     by two game structures: One in the white players list and one in the
  161.     black players list.
  162. */
  163. struct Game
  164.   { struct Game *Next;          /*  Pointer to next game                    */
  165.     struct Player *Opponent;    /*  Pointer to Opponent                     */
  166.     short BoardNr;              /*  Board number                            */
  167.     short Result;               /*  Result (-1 = Result is missing)         */
  168.     short Flags;                /*  See below                               */
  169.   };
  170. /*
  171.     Possible flags in the game structure
  172. */
  173. #define GMFLAGSB_NOFIGHT        0
  174. #define GMFLAGSB_POINTFORFREE   1
  175. #define GMFLAGSB_WITHDRAWN      2
  176. #define GMFLAGSB_WHITE          3
  177. #define GMFLAGSF_NOFIGHT (1 << GMFLAGSB_NOFIGHT)
  178. #define GMFLAGSF_POINTFORFREE (1 << GMFLAGSB_POINTFORFREE)
  179. #define GMFLAGSF_WITHDRAWN (1 << GMFLAGSB_WITHDRAWN)
  180. #define GMFLAGSF_WHITE (1 << GMFLAGSB_WHITE)
  181.  
  182.  
  183.  
  184.  
  185. /*
  186.     Possible output devices
  187. */
  188. #define DEVICE_Screen       0
  189. #define DEVICE_PrinterDraft 1
  190. #define DEVICE_PrinterLQ    2
  191. #define DEVICE_FileAscii    3
  192. #define DEVICE_FileTeX      4
  193.  
  194.  
  195.  
  196.  
  197. /*
  198.     The structure GameNode is used to build a list of all games of one round.
  199. */
  200. struct GameNode
  201.   { struct MinNode gn_Node;
  202.     struct Player *White, *Black;
  203.     short BoardNr;
  204.     short Result, Flags;  /*  of White  */
  205.     char Text[80];
  206.   };
  207.  
  208.  
  209.  
  210. /*
  211.     Prototypes of main.c
  212. */
  213. extern struct Library *MUIMasterBase;
  214. extern struct ExecBase *SysBase;
  215. extern struct DosLibrary *DOSBase;
  216. extern struct IntuitionBase *IntuitionBase;
  217. extern struct Library *UtilityBase;
  218. extern struct Library *IconBase;
  219. extern char *AVERSION;
  220. extern char *PVERSION;
  221. extern char *MVERSION;
  222. extern char *VERVERSION;
  223. extern struct List PlayerList;
  224. extern int IsSaved;
  225. extern int OutputDevice;
  226. extern char TrnFileName [TRNFILENAME_LEN+1];
  227. extern int AllowErrorMessage;
  228. extern int NumRounds;
  229. extern struct Player *RankingFirst;
  230. extern int NumPlayers;
  231. extern int NumGamesMissing;
  232. extern char TrnName [TRNNAME_LEN+1];
  233. extern int DefaultWinnerPoints;
  234. extern int DefaultDrawPoints;
  235. extern int WinnerPoints;
  236. extern int DrawPoints;
  237. extern int TrnMode;
  238.  
  239.  
  240. /*
  241.     Prototypes of MaiAmi.c
  242. */
  243. #ifdef AMIGA
  244. extern int MakeIcons;
  245. extern char IconName[TRNFILENAME_LEN+1];
  246. extern char ProgName[TRNFILENAME_LEN+1];
  247. extern APTR App;
  248. extern APTR MainWnd;
  249. #endif
  250.  
  251. extern void OpenLibs(void);
  252. extern void InitRandom(void);
  253. extern void DoStartup(int argc, char *argv[]);
  254. extern void InitMainWnd(void);
  255. extern void ProcessMainWnd(void);
  256. extern void TerminateMainWnd(void);
  257. extern void CloseLibs(void);
  258. extern void ShowError(char *, ...);
  259. extern void MemError(void);
  260. #ifdef AMIGA
  261. extern void MUIError(char *);
  262. #endif  /*  AMIGA   */
  263.  
  264.  
  265. /*
  266.     Prototypes of Memory.c
  267. */
  268. extern void *GetMem(void **, ULONG);
  269. extern void PutMem(void *);
  270. extern void PutMemList(void **);
  271. extern void PutMemAll(void);
  272. extern char *GetStringMem(void **, char *);
  273. extern void MoveMemList(void **, void **);
  274.  
  275.  
  276. /*
  277.     Prototypes of Project.c
  278. */
  279. extern void *TrnMem;
  280. extern void DeleteTournament(char *);
  281. extern int TestSaved(void);
  282. extern int LoadTournament(char *, void **, struct List *);
  283. extern int SaveTournament(char *);
  284. extern void NewTournament(void);
  285. extern void About(void);
  286.  
  287.  
  288. /*
  289.     Prototypes of ProjectAmi.c
  290. */
  291. extern char *FileRequest(char *, char *, char *, int);
  292. extern int AskSave(void);
  293. extern void CreateIcon(char *);
  294. extern void TerminateTrnWnd(void);
  295. extern int InitTrnWnd(char *, int, int);
  296. extern int ProcessTrnWnd(char *, int *, int *);
  297.  
  298.  
  299. /*
  300.     Prototypes of Players.c
  301. */
  302. extern int CheckPlayerValid(struct Player *, int);
  303. extern int AddPlayer(struct Player *);
  304. extern void AddPlayers(void);
  305. extern void ImportPlayers(void);
  306. extern void ModifyPlayer(struct Player *, struct Player *);
  307. extern int ModifyOnePlayer(struct Player *, int);
  308. extern void ModifyPlayers(void);
  309. extern void DeletePlayer(struct Player *);
  310. extern void DeletePlayers(void);
  311.  
  312.  
  313. /*
  314.     Prototypes of PlayersAmi.c
  315. */
  316. extern int AskContinue(char *, ...);
  317. extern int AskExtContinue(char *, char *, ...);
  318. extern int InitPlrWnd(char *);
  319. extern int ProcessPlrWnd(struct Player *, int);
  320. extern void TerminatePlrWnd(void);
  321. extern int ProcessPlrSelWnd(char *, char *, char, int, struct List *);
  322.  
  323.  
  324. /*
  325.     Prototypes of Pairings.c
  326. */
  327. extern struct Game *GameAddress(struct Player *, int);
  328. extern void CreateRankings(void);
  329. extern int GamePossible(struct Player *, struct Player *);
  330. extern int DoPairings(int, int, int);
  331.  
  332.  
  333. /*
  334.     Prototypes of SwissPairing.c
  335. */
  336. extern int DoFirstGroup(void);
  337.  
  338.  
  339. /*
  340.     Prototypes of PairingsAmi.c
  341. */
  342. extern int InitSetGames(void);
  343. extern int SetPlayer(struct Player *, int, int);
  344. extern int GetSettings(int);
  345.  
  346.  
  347. /*
  348.     Prototypes of Rounds.c
  349. */
  350. extern void FormatGame(struct GameNode *, int);
  351. extern struct MinList *GetRound(void **, int, int, int);
  352. extern void EnterResult(struct GameNode *, int);
  353. extern void EnterResults(int);
  354.  
  355.  
  356. /*
  357.     Prototypes of RoundsAmi.c
  358. */
  359. extern int GetRoundNr(void);
  360. extern void TerminateRsltWnd(void);
  361. extern int InitRsltWnd(char *, struct MinList *);
  362. extern int ProcessRsltWnd(struct MinList *);
  363.  
  364.  
  365. /*
  366.     Prototypes of Out.c
  367. */
  368. extern int tdwz(struct Player *);
  369. extern void PointsToA(char *, long);
  370. extern int longlprint(char *);
  371. extern int lprint(char *);
  372. extern void OutPlayerList(char *, int, int);
  373. extern void OutInternalRankings(char *, int);
  374. extern void OutRound(char *, int, int);
  375. extern void OutTable(char *, int, int, int);
  376. extern void OutTableProgress(char *, int, int);
  377. extern struct Player *MakeTable(int);
  378. extern void OutCrossTable(char *, int);
  379. extern void OutPlayerCards(char *, int);
  380.  
  381.  
  382. /*
  383.     Prototypes for OutAmi.c
  384. */
  385. extern int CenterText(int);
  386. extern int AskForBirthday(struct Player *);
  387. extern int InitOutput(char *, char *, char *, char *, char *, int, int, int);
  388. extern void ProcessOutput(void);
  389. extern void TerminateOutput(void);
  390.  
  391.  
  392. /*
  393.     Prototypes for OutDWZ.c
  394. */
  395. extern int atotm(char *, struct tm *);
  396. extern void OutDWZReport(char *, int);
  397.  
  398.  
  399. /*
  400.     Debugging stuff
  401. */
  402. #ifdef DEBUG
  403. #define strlen dbg_strlen
  404. extern size_t dbg_strlen(const char *);
  405. #define strcpy dbg_strcpy
  406. extern char *strcpy(char *, const char *);
  407. #define sprintf dbg_sprintf
  408. extern int sprintf(char *dest, const char *fmt, ...);
  409. #define fprintf dbg_fprintf
  410. extern int fprintf(FILE *fh, const char *fmt, ...);
  411. #define printf dbg_printf
  412. extern int printf(const char *fmt, ...);
  413. extern void kprintf(const char *, ...);
  414. #endif
  415.  
  416.  
  417.  
  418. #ifdef AMIGA
  419. /*
  420.     Some compiler specific stuff (how to use register arguments)
  421. */
  422. #ifdef _DCC
  423. #define REG(x) __ ## x
  424. #define ASM
  425. #define SAVEDS __geta4
  426. #endif  /*  _DCC    */
  427. #ifdef __SASC
  428. #define REG(x) register __ ## x
  429. #define ASM    __asm
  430. #define SAVEDS __saveds
  431. #endif  /*  __SASC  */
  432. #ifdef AZTEC_C
  433. #define REG(x)
  434. #define ASM
  435. #define SAVEDS
  436. #endif  /*  AZTEC_C */
  437.  
  438.  
  439. /*
  440.     Check if we use 2.0-Includes.
  441. */
  442. #ifdef GFLG_RELSPECIAL
  443. #define V39_INCLUDES
  444. #endif  /*  GFLG_RELSPECIAL */
  445. #endif  /*  AMIGA           */
  446. #endif  /*  !CHAOS_H        */
  447.